package com.java.generic.special_reminder;

import java.util.ArrayList;

/**
 * 泛型检查针对引用还是对象？
 */
public class RefOrObject {
    public static void main(String[] args) {
        // 泛型检查针对引用：泛型检查在编译时期，引用也是
        ArrayList<String> list1 = new ArrayList();
        list1.add("SYX"); // 编译通过
        // list1.add(20); // 编译失败
        String str1 = list1.get(0);
        
        // 泛型检查不针对对象：泛型检查在编译时期，对象则是运行时期在堆内开辟新空间
        ArrayList list2 = new ArrayList<String>();
        list2.add("SYX"); // 编译通过
        list2.add(20); // 编译通过
        Object object = list2.get(0);
        
        new ArrayList<String>().add("SYX"); // 编译通过
        // new ArrayList<String>().add(20); // 编译失败
        String str2 = new ArrayList<String>().get(0);
    }
}
